package service.locaveis;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

import model.Categoria;
import model.locaveis.Periodico;
import service.GenericDAOImpl;

public class PeriodicoDAO extends GenericDAOImpl<Periodico> {
	
	public PeriodicoDAO(EntityManager em) {
		super.entityManager = em;
	}
	
	public Periodico criaPeriodico(ArrayList<String> autores, Categoria categoria,
			ArrayList<String> editores, String issn, String nome,
			int numeroPaginas, ArrayList<String> palavrasChave, int totalUnidades) {
		Periodico per = new Periodico();
		per.setAutores(autores);
		per.setCategoria(categoria);
		per.setEditores(editores);
		per.setIssn(issn);
		per.setNome(nome);
		per.setNumeroPaginas(numeroPaginas);
		per.setPalavrasChave(palavrasChave);
		per.setTotalUnidades(totalUnidades);
		
		insereObjeto(per);
		
		return per;
	}

	@Override
	public Periodico localizaObjeto(Long objId) {
		Periodico obj = entityManager.getReference(
				Periodico.class, objId);
		return obj;
	}

	@Override
	public List<Periodico> listaObjetos() {
		TypedQuery<Periodico> query = entityManager.createQuery(
				"SELECT e FROM Periodico e", Periodico.class);
		return query.getResultList();
	}

	@Override
	public void deletaObjetos() {
		TypedQuery<Periodico> query = entityManager.createQuery(
				"DELETE FROM Periodico", Periodico.class);
		query.executeUpdate();
	}
	
	public boolean verificaDisponibilidade(Long objId) {
		Periodico per = localizaObjeto(objId);
		if(per != null && per.getTotalLocados() < per.getTotalUnidades()) {
			return true;
		}
		return false;
	}
	
}
